<?php
class Zendhlt_Validate_Birthday extends Zend_Validate_Abstract {
	
    const NOT_BIRTHDAY = 'notBirthday';
    const INVALID_BIRTHDAY = 'invalidBirthday';
    const STRING_EMPTY = 'stringEmpty';

    protected $_messageTemplates = array(
        self::NOT_BIRTHDAY => "Năm sinh phải là số.",
        self::INVALID_BIRTHDAY => "Đây là ngày không hợp lệ.",
        self::STRING_EMPTY => "Ngày sinh chưa đầy đủ."
    );

    public function isValid($value) {
    	if (strlen($value) != 10) {
    		$this->_error(self::STRING_EMPTY);
            return false;
    	}
    	
    	$year = substr($value, 6, 4);
    	if (!preg_match("/^([0-9])+$/", $year)) {
    		$this->_error(self::NOT_BIRTHDAY);
            return false;
    	}
    	
        $this->_setValue((string) $value);
        
        $day = substr($value, 0, 2);
        $month = substr($value, 3, 2);
        if (!checkdate($month, $day, $year)) {
            $this->_error(self::INVALID_BIRTHDAY);
            return false;
        }

        return true;
    }
}

